#include <string>
#include <iostream>
#include <vector>
#ifndef M_MAP_DEF
#define M_MAP_DEF
namespace M_M_Map{
    #define M_M_Map_INF 10000
    typedef struct {
        int start_id;
        int end_id;
        double distance;
    }m_edge;
    typedef struct {
        int node_id;
        double x;
        double y;
    }m_node;
    class M_Map
    {
    private:
        /* data */
        //M_Map 中 node 的数量
        int NodeCnt;
        std::vector<m_edge> edges;
        std::vector<m_node> nodes;
        double** distance_M_Map;
    public:
        /**
         * @param cnt M_Map's nodes count;
         */
        M_Map();
        void addNode(m_node n);
        void initialDistanceM_Map();
        m_node findNode(double x,double y);
        m_node getNode(int nodeid);
        M_Map(int cnt);
        ~M_Map();
        void addEdge(m_edge e);
        std::vector<m_edge> getEdges();
        double** getDistanceM_Map();
    };
    
}

#endif